package com.xsd.rabbitmq.ps;


import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.xsd.rabbitmq.util.ConnectionUtil;

/**
 * 发布与订阅使用的交换机类型为：fanout
 */
public class Producer {

    //交换机名称
    static final String FANOUT_EXCHAGE = "fanout_exchange";
    //队列名称
    static final String FANOUT_QUEUE_1 = "fanout_queue_1";
    //队列名称
    static final String FANOUT_QUEUE_2 = "fanout_queue_2";

    public static void main(String[] args) throws Exception {

        //创建连接
        Connection connection = ConnectionUtil.getConnection();

        // 创建频道
        Channel channel = connection.createChannel();

        /**
         * 声明交换机
         * 参数1： 交换机名称
         * 参数2 ：交换机类型：fanout topic direct ,headers
         */
        channel.exchangeDeclare(FANOUT_EXCHAGE,BuiltinExchangeType.FANOUT);

        /**
         * 声明创建队列
         * 参数1： 队列名称
         * 参数2：是否定义持久化队列
         * 参数3： 是否独占本次连接
         * 参数4：是否在不适用的时候自动删除队列
         * 参数5：队列其他参数
         */
        channel.queueDeclare(FANOUT_QUEUE_1,true,false,false,null);
        channel.queueDeclare(FANOUT_QUEUE_2,true,false,false,null);

        // 队列绑定交换机
        channel.queueBind(FANOUT_QUEUE_1,FANOUT_EXCHAGE,"");
        channel.queueBind(FANOUT_QUEUE_2,FANOUT_EXCHAGE,"");

        for (int i = 0; i <10 ; i++) {
            // 发送消息
            String message= "hello rabbitmq publishSubscribe--"+i;
            channel.basicPublish(FANOUT_EXCHAGE,"",null,message.getBytes());

        }

        channel.close();
        connection.close();
    }
}